home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / server / swamp.c < prev    next >
C/C++ Source or Header  |  1996-07-24  |  2KB  |  62 lines

  1. /*
  2.  * static char *rcsid_swamp_c =
  3.  *   "$Id: swamp.c,v 1.8 1994/12/30 08:09:50 master Exp $";
  4.  */
  5.  
  6. #include <global.h>
  7. #ifndef __CEXTRACT__
  8. #include <sproto.h>
  9. #endif
  10.  
  11. void deep_swamp(object *op, int walk_on)
  12. {
  13.   object *above = op->above;
  14.   object *nabove;
  15.  
  16.   while(above) {
  17.     nabove = above->above;
  18.     if (above->type == PLAYER && 
  19.     !QUERY_FLAG(above, FLAG_FLYING) &&
  20.     above->stats.hp >= 0) {
  21.  
  22.       if (op->stats.food == 0 || walk_on) {
  23.     new_draw_info(NDI_UNIQUE, 0,above, "You are down to your knees in the swamp.");
  24.     op->stats.food = 1;
  25.     above->speed_left -= SLOW_PENALTY(op);
  26.       } else {
  27.     switch(op->stats.food) {
  28.     case 1:
  29.       if (RANDOM()%3 == 0) {
  30.         new_draw_info(NDI_UNIQUE, 0,above, "You are down to your waist in the wet swamp.");
  31.         op->stats.food = 2;
  32.         above->speed_left -= SLOW_PENALTY(op);
  33.       }
  34.       break;
  35.     case 2:
  36.       if (RANDOM()%3 == 0) {
  37.         new_draw_info(NDI_UNIQUE, 0,above, "You are down to your NECK in the dangerous swamp.");
  38.         op->stats.food = 3;
  39.         strcpy(above->contr->killer,"drowning in a swamp");
  40.         above->stats.hp--;
  41.         above->speed_left -= SLOW_PENALTY(op);
  42.       }
  43.       break;
  44.     case 3:
  45.       if (RANDOM()%5 == 0) {
  46.         op->stats.food = 0;
  47.         new_draw_info_format(NDI_UNIQUE | NDI_ALL, 1, NULL,
  48.         "%s disappeared into a swamp.",above->name);
  49.         strcpy(above->contr->killer,"drowning in a swamp");
  50.         above->stats.hp = -1;
  51.         draw_stats(op);
  52.       }
  53.       break;
  54.     }
  55.       }
  56.     } else if (!QUERY_FLAG(above, FLAG_ALIVE)) {
  57.       if (RANDOM()%3 == 0) decrease_ob(above);
  58.     }
  59.     above = nabove;
  60.   }
  61. }
  62.